| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226 | 1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
| System.register(['aurelia-dependency-injection', './view', './view-slot', './content-selector', './resource-registry'], function (_export) {
'use strict';
var Container, View, ViewSlot, ContentSelector, ViewResources, BoundViewFactory, defaultFactoryOptions, ViewFactory;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
function elementContainerGet(key) {
if (key === Element) {
return this.element;
}
if (key === BoundViewFactory) {
if (this.boundViewFactory) {
return this.boundViewFactory;
}
var factory = this.instruction.viewFactory,
partReplacements = this.partReplacements;
if (partReplacements) {
factory = partReplacements[factory.part] || factory;
}
factory.partReplacements = partReplacements;
return this.boundViewFactory = new BoundViewFactory(this, factory, this.executionContext);
}
if (key === ViewSlot) {
if (this.viewSlot === undefined) {
this.viewSlot = new ViewSlot(this.element, this.instruction.anchorIsContainer, this.executionContext);
this.children.push(this.viewSlot);
}
return this.viewSlot;
}
if (key === ViewResources) {
return this.viewResources;
}
return this.superGet(key);
}
function createElementContainer(parent, element, instruction, executionContext, children, partReplacements, resources) {
var container = parent.createChild(),
providers,
i;
container.element = element;
container.instruction = instruction;
container.executionContext = executionContext;
container.children = children;
container.viewResources = resources;
container.partReplacements = partReplacements;
providers = instruction.providers;
i = providers.length;
while (i--) {
container.registerSingleton(providers[i]);
}
container.superGet = container.get;
container.get = elementContainerGet;
return container;
}
function makeElementIntoAnchor(element, isCustomElement) {
var anchor = document.createComment('anchor');
if (isCustomElement) {
anchor.attributes = element.attributes;
anchor.hasAttribute = function (name) {
return element.hasAttribute(name);
};
anchor.getAttribute = function (name) {
return element.getAttribute(name);
};
anchor.setAttribute = function (name, value) {
element.setAttribute(name, value);
};
}
element.parentNode.replaceChild(anchor, element);
return anchor;
}
function applyInstructions(containers, executionContext, element, instruction, behaviors, bindings, children, contentSelectors, partReplacements, resources) {
var behaviorInstructions = instruction.behaviorInstructions,
expressions = instruction.expressions,
elementContainer,
i,
ii,
current,
instance;
if (instruction.contentExpression) {
bindings.push(instruction.contentExpression.createBinding(element.nextSibling));
element.parentNode.removeChild(element);
return;
}
if (instruction.contentSelector) {
var commentAnchor = document.createComment('anchor');
element.parentNode.replaceChild(commentAnchor, element);
contentSelectors.push(new ContentSelector(commentAnchor, instruction.selector));
return;
}
if (behaviorInstructions.length) {
if (!instruction.anchorIsContainer) {
element = makeElementIntoAnchor(element, instruction.isCustomElement);
}
containers[instruction.injectorId] = elementContainer = createElementContainer(containers[instruction.parentInjectorId], element, instruction, executionContext, children, partReplacements, resources);
for (i = 0, ii = behaviorInstructions.length; i < ii; ++i) {
current = behaviorInstructions[i];
instance = current.type.create(elementContainer, current, element, bindings, current.partReplacements);
if (instance.contentView) {
children.push(instance.contentView);
}
behaviors.push(instance);
}
}
for (i = 0, ii = expressions.length; i < ii; ++i) {
bindings.push(expressions[i].createBinding(element));
}
}
return {
setters: [function (_aureliaDependencyInjection) {
Container = _aureliaDependencyInjection.Container;
}, function (_view) {
View = _view.View;
}, function (_viewSlot) {
ViewSlot = _viewSlot.ViewSlot;
}, function (_contentSelector) {
ContentSelector = _contentSelector.ContentSelector;
}, function (_resourceRegistry) {
ViewResources = _resourceRegistry.ViewResources;
}],
execute: function () {
BoundViewFactory = (function () {
function BoundViewFactory(parentContainer, viewFactory, executionContext) {
_classCallCheck(this, BoundViewFactory);
this.parentContainer = parentContainer;
this.viewFactory = viewFactory;
this.executionContext = executionContext;
this.factoryOptions = { behaviorInstance: false };
}
BoundViewFactory.prototype.create = function create(executionContext) {
var childContainer = this.parentContainer.createChild(),
context = executionContext || this.executionContext;
this.factoryOptions.systemControlled = !executionContext;
return this.viewFactory.create(childContainer, context, this.factoryOptions);
};
return BoundViewFactory;
})();
_export('BoundViewFactory', BoundViewFactory);
defaultFactoryOptions = {
systemControlled: false,
suppressBind: false
};
ViewFactory = (function () {
function ViewFactory(template, instructions, resources) {
_classCallCheck(this, ViewFactory);
this.template = template;
this.instructions = instructions;
this.resources = resources;
}
ViewFactory.prototype.create = function create(container, executionContext) {
var options = arguments[2] === undefined ? defaultFactoryOptions : arguments[2];
var fragment = this.template.cloneNode(true),
instructables = fragment.querySelectorAll('.au-target'),
instructions = this.instructions,
resources = this.resources,
behaviors = [],
bindings = [],
children = [],
contentSelectors = [],
containers = { root: container },
partReplacements = options.partReplacements || this.partReplacements,
i,
ii,
view;
for (i = 0, ii = instructables.length; i < ii; ++i) {
applyInstructions(containers, executionContext, instructables[i], instructions[i], behaviors, bindings, children, contentSelectors, partReplacements, resources);
}
view = new View(fragment, behaviors, bindings, children, options.systemControlled, contentSelectors);
view.created(executionContext);
if (!options.suppressBind) {
view.bind(executionContext);
}
return view;
};
return ViewFactory;
})();
_export('ViewFactory', ViewFactory);
}
};
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmcvc3JjL3ZpZXctZmFjdG9yeS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7aUVBdUlhLGdCQUFnQixFQWtCekIscUJBQXFCLEVBS1osV0FBVzs7OztBQXhKeEIsV0FBUyxtQkFBbUIsQ0FBQyxHQUFHLEVBQUM7QUFDL0IsUUFBRyxHQUFHLEtBQUssT0FBTyxFQUFDO0FBQ2pCLGFBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztLQUNyQjs7QUFFRCxRQUFHLEdBQUcsS0FBSyxnQkFBZ0IsRUFBQztBQUMxQixVQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBQztBQUN2QixlQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztPQUM5Qjs7QUFFRCxVQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVc7VUFDdEMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxVQUFHLGdCQUFnQixFQUFDO0FBQ2xCLGVBQU8sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDO09BQ3JEOztBQUVELGFBQU8sQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUM1QyxhQUFPLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FDM0Y7O0FBRUQsUUFBRyxHQUFHLEtBQUssUUFBUSxFQUFDO0FBQ2xCLFVBQUcsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUM7QUFDN0IsWUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGdC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QyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBQztBQUNoRCw2QkFBaUIsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUM5RCxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7V0FDbEc7O0FBRUQsY0FBSSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUNyRyxjQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7O0FBRS9CLGNBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFDO0FBQ3ZCLGdCQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7V0FDN0I7O0FBRUQsaUJBQU8sSUFBSSxDQUFDO1NBQ2I7O2VBakNVLFdBQVc7Ozs2QkFBWCxXQUFXIiwiZmlsZSI6Ii9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL3RlbXBsYXRpbmcvc3JjL3ZpZXctZmFjdG9yeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udGFpbmVyfSBmcm9tICdhdXJlbGlhLWRlcGVuZGVuY3ktaW5qZWN0aW9uJztcbmltcG9ydCB7Vmlld30gZnJvbSAnLi92aWV3JztcbmltcG9ydCB7Vmlld1Nsb3R9IGZyb20gJy4vdmlldy1zbG90JztcbmltcG9ydCB7Q29udGVudFNlbGVjdG9yfSBmcm9tICcuL2NvbnRlbnQtc2VsZWN0b3InO1xuaW1wb3J0IHtWaWV3UmVzb3VyY2VzfSBmcm9tICcuL3Jlc291cmNlLXJlZ2lzdHJ5JztcblxuZnVuY3Rpb24gZWxlbWVudENvbnRhaW5lckdldChrZXkpe1xuICBpZihrZXkgPT09IEVsZW1lbnQpe1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnQ7XG4gIH1cblxuICBpZihrZXkgPT09IEJvdW5kVmlld0ZhY3Rvcnkpe1xuICAgIGlmKHRoaXMuYm91bmRWaWV3RmFjdG9yeSl7XG4gICAgICByZXR1cm4gdGhpcy5ib3VuZFZpZXdGYWN0b3J5O1xuICAgIH1cblxuICAgIHZhciBmYWN0b3J5ID0gdGhpcy5pbnN0cnVjdGlvbi52aWV3RmFjdG9yeSxcbiAgICAgICAgcGFydFJlcGxhY2VtZW50cyA9IHRoaXMucGFydFJlcGxhY2VtZW50cztcblxuICAgIGlmKHBhcnRSZXBsYWNlbWVudHMpe1xuICAgICAgZmFjdG9yeSA9IHBhcnRSZXBsYWNlbWVudHNbZmFjdG9yeS5wYXJ0XSB8fCBmYWN0b3J5O1xuICAgIH1cblxuICAgIGZhY3RvcnkucGFydFJlcGxhY2VtZW50cyA9IHBhcnRSZXBsYWNlbWVudHM7XG4gICAgcmV0dXJuIHRoaXMuYm91bmRWaWV3RmFjdG9yeSA9IG5ldyBCb3VuZFZpZXdGYWN0b3J5KHRoaXMsIGZhY3RvcnksIHRoaXMuZXhlY3V0aW9uQ29udGV4dCk7XG4gIH1cblxuICBpZihrZXkgPT09IFZpZXdTbG90KXtcbiAgICBpZih0aGlzLnZpZXdTbG90ID09PSB1bmRlZmluZWQpe1xuICAgICAgdGhpcy52aWV3U2xvdCA9IG5ldyBWaWV3U2xvdCh0aGlzLmVsZW1lbnQsIHRoaXMuaW5zdHJ1Y3Rpb24uYW5jaG9ySXNDb250YWluZXIsIHRoaXMuZXhlY3V0aW9uQ29udGV4dCk7XG4gICAgICB0aGlzLmNoaWxkcmVuLnB1c2godGhpcy52aWV3U2xvdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmlld1Nsb3Q7XG4gIH1cblxuICBpZihrZXkgPT09IFZpZXdSZXNvdXJjZXMpe1xuICAgIHJldHVybiB0aGlzLnZpZXdSZXNvdXJjZXM7XG4gIH1cblxuICByZXR1cm4gdGhpcy5zdXBlckdldChrZXkpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50Q29udGFpbmVyKHBhcmVudCwgZWxlbWVudCwgaW5zdHJ1Y3Rpb24sIGV4ZWN1dGlvbkNvbnRleHQsIGNoaWxkcmVuLCBwYXJ0UmVwbGFjZW1lbnRzLCByZXNvdXJjZXMpe1xuICB2YXIgY29udGFpbmVyID0gcGFyZW50LmNyZWF0ZUNoaWxkKCksXG4gICAgICAgICAgICAgICAgICBwcm92aWRlcnMsXG4gICAgICAgICAgICAgICAgICBpO1xuXG4gIGNvbnRhaW5lci5lbGVtZW50ID0gZWxlbWVudDtcbiAgY29udGFpbmVyLmluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb247XG4gIGNvbnRhaW5lci5leGVjdXRpb25Db250ZXh0ID0gZXhlY3V0aW9uQ29udGV4dDtcbiAgY29udGFpbmVyLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIGNvbnRhaW5lci52aWV3UmVzb3VyY2VzID0gcmVzb3VyY2VzO1xuICBjb250YWluZXIucGFydFJlcGxhY2VtZW50cyA9IHBhcnRSZXBsYWNlbWVudHM7XG5cbiAgcHJvdmlkZXJzID0gaW5zdHJ1Y3Rpb24ucHJvdmlkZXJzO1xuICBpID0gcHJvdmlkZXJzLmxlbmd0aDtcblxuICB3aGlsZShpLS0pIHtcbiAgICBjb250YWluZXIucmVnaXN0ZXJTaW5nbGV0b24ocHJvdmlkZXJzW2ldKTtcbiAgfVxuXG4gIGNvbnRhaW5lci5zdXBlckdldCA9IGNvbnRhaW5lci5nZXQ7XG4gIGNvbnRhaW5lci5nZXQgPSBlbGVtZW50Q29udGFpbmVyR2V0O1xuXG4gIHJldHVybiBjb250YWluZXI7XG59XG5cbmZ1bmN0aW9uIG1ha2VFbGVtZW50SW50b0FuY2hvcihlbGVtZW50LCBpc0N1c3RvbUVsZW1lbnQpe1xuICB2YXIgYW5jaG9yID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnYW5jaG9yJyk7XG5cbiAgaWYoaXNDdXN0b21FbGVtZW50KXtcbiAgICBhbmNob3IuYXR0cmlidXRlcyA9IGVsZW1lbnQuYXR0cmlidXRlcztcbiAgICBhbmNob3IuaGFzQXR0cmlidXRlID0gZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUobmFtZSk7IH07XG4gICAgYW5jaG9yLmdldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUpeyByZXR1cm4gZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7IH07XG4gICAgYW5jaG9yLnNldEF0dHJpYnV0ZSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7IGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTsgfTtcbiAgfVxuXG4gIGVsZW1lbnQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYW5jaG9yLCBlbGVtZW50KTtcblxuICByZXR1cm4gYW5jaG9yO1xufVxuXG5mdW5jdGlvbiBhcHBseUluc3RydWN0aW9ucyhjb250YWluZXJzLCBleGVjdXRpb25Db250ZXh0LCBlbGVtZW50LCBpbnN0cnVjdGlvbixcbiAgYmVoYXZpb3JzLCBiaW5kaW5ncywgY2hpbGRyZW4sIGNvbnRlbnRTZWxlY3RvcnMsIHBhcnRSZXBsYWNlbWVudHMsIHJlc291cmNlcyl7XG4gIHZhciBiZWhhdmlvckluc3RydWN0aW9ucyA9IGluc3RydWN0aW9uLmJlaGF2aW9ySW5zdHJ1Y3Rpb25zLFxuICAgICAgZXhwcmVzc2lvbnMgPSBpbnN0cnVjdGlvbi5leHByZXNzaW9ucyxcbiAgICAgIGVsZW1lbnRDb250YWluZXIsIGksIGlpLCBjdXJyZW50LCBpbnN0YW5jZTtcblxuICBpZihpbnN0cnVjdGlvbi5jb250ZW50RXhwcmVzc2lvbil7XG4gICAgYmluZGluZ3MucHVzaChpbnN0cnVjdGlvbi5jb250ZW50RXhwcmVzc2lvbi5jcmVhdGVCaW5kaW5nKGVsZW1lbnQubmV4dFNpYmxpbmcpKTtcbiAgICBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYoaW5zdHJ1Y3Rpb24uY29udGVudFNlbGVjdG9yKXtcbiAgICB2YXIgY29tbWVudEFuY2hvciA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJ2FuY2hvcicpO1xuICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoY29tbWVudEFuY2hvciwgZWxlbWVudCk7XG4gICAgY29udGVudFNlbGVjdG9ycy5wdXNoKG5ldyBDb250ZW50U2VsZWN0b3IoY29tbWVudEFuY2hvciwgaW5zdHJ1Y3Rpb24uc2VsZWN0b3IpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZihiZWhhdmlvckluc3RydWN0aW9ucy5sZW5ndGgpe1xuICAgIGlmKCFpbnN0cnVjdGlvbi5hbmNob3JJc0NvbnRhaW5lcil7XG4gICAgICBlbGVtZW50ID0gbWFrZUVsZW1lbnRJbnRvQW5jaG9yKGVsZW1lbnQsIGluc3RydWN0aW9uLmlzQ3VzdG9tRWxlbWVudCk7XG4gICAgfVxuXG4gICAgY29udGFpbmVyc1tpbnN0cnVjdGlvbi5pbmplY3RvcklkXSA9IGVsZW1lbnRDb250YWluZXIgPVxuICAgICAgY3JlYXRlRWxlbWVudENvbnRhaW5lcihcbiAgICAgICAgY29udGFpbmVyc1tpbnN0cnVjdGlvbi5wYXJlbnRJbmplY3RvcklkXSxcbiAgICAgICAgZWxlbWVudCxcbiAgICAgICAgaW5zdHJ1Y3Rpb24sXG4gICAgICAgIGV4ZWN1dGlvbkNvbnRleHQsXG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICBwYXJ0UmVwbGFjZW1lbnRzLFxuICAgICAgICByZXNvdXJjZXNcbiAgICAgICAgKTtcblxuICAgIGZvcihpID0gMCwgaWkgPSBiZWhhdmlvckluc3RydWN0aW9ucy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICAgIGN1cnJlbnQgPSBiZWhhdmlvckluc3RydWN0aW9uc1tpXTtcbiAgICAgIGluc3RhbmNlID0gY3VycmVudC50eXBlLmNyZWF0ZShlbGVtZW50Q29udGFpbmVyLCBjdXJyZW50LCBlbGVtZW50LCBiaW5kaW5ncywgY3VycmVudC5wYXJ0UmVwbGFjZW1lbnRzKTtcblxuICAgICAgaWYoaW5zdGFuY2UuY29udGVudFZpZXcpe1xuICAgICAgICBjaGlsZHJlbi5wdXNoKGluc3RhbmNlLmNvbnRlbnRWaWV3KTtcbiAgICAgIH1cblxuICAgICAgYmVoYXZpb3JzLnB1c2goaW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuXG4gIGZvcihpID0gMCwgaWkgPSBleHByZXNzaW9ucy5sZW5ndGg7IGkgPCBpaTsgKytpKXtcbiAgICBiaW5kaW5ncy5wdXNoKGV4cHJlc3Npb25zW2ldLmNyZWF0ZUJpbmRpbmcoZWxlbWVudCkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCb3VuZFZpZXdGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IocGFyZW50Q29udGFpbmVyLCB2aWV3RmFjdG9yeSwgZXhlY3V0aW9uQ29udGV4dCl7XG4gICAgdGhpcy5wYXJlbnRDb250YWluZXIgPSBwYXJlbnRDb250YWluZXI7XG4gICAgdGhpcy52aWV3RmFjdG9yeSA9IHZpZXdGYWN0b3J5O1xuICAgIHRoaXMuZXhlY3V0aW9uQ29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQ7XG4gICAgdGhpcy5mYWN0b3J5T3B0aW9ucyA9IHsgYmVoYXZpb3JJbnN0YW5jZTpmYWxzZSB9O1xuICB9XG5cbiAgY3JlYXRlKGV4ZWN1dGlvbkNvbnRleHQpe1xuICAgIHZhciBjaGlsZENvbnRhaW5lciA9IHRoaXMucGFyZW50Q29udGFpbmVyLmNyZWF0ZUNoaWxkKCksXG4gICAgICAgIGNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0IHx8IHRoaXMuZXhlY3V0aW9uQ29udGV4dDtcblxuICAgIHRoaXMuZmFjdG9yeU9wdGlvbnMuc3lzdGVtQ29udHJvbGxlZCA9ICFleGVjdXRpb25Db250ZXh0O1xuXG4gICAgcmV0dXJuIHRoaXMudmlld0ZhY3RvcnkuY3JlYXRlKGNoaWxkQ29udGFpbmVyLCBjb250ZXh0LCB0aGlzLmZhY3RvcnlPcHRpb25zKTtcbiAgfVxufVxuXG52YXIgZGVmYXVsdEZhY3RvcnlPcHRpb25zID0ge1xuICBzeXN0ZW1Db250cm9sbGVkOmZhbHNlLFxuICBzdXBwcmVzc0JpbmQ6ZmFsc2Vcbn07XG5cbmV4cG9ydCBjbGFzcyBWaWV3RmFjdG9yeXtcbiAgY29uc3RydWN0b3IodGVtcGxhdGUsIGluc3RydWN0aW9ucywgcmVzb3VyY2VzKXtcbiAgICB0aGlzLnRlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgdGhpcy5pbnN0cnVjdGlvbnMgPSBpbnN0cnVjdGlvbnM7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSByZXNvdXJjZXM7XG4gIH1cblxuICBjcmVhdGUoY29udGFpbmVyLCBleGVjdXRpb25Db250ZXh0LCBvcHRpb25zPWRlZmF1bHRGYWN0b3J5T3B0aW9ucyl7XG4gICAgdmFyIGZyYWdtZW50ID0gdGhpcy50ZW1wbGF0ZS5jbG9uZU5vZGUodHJ1ZSksXG4gICAgICAgIGluc3RydWN0YWJsZXMgPSBmcmFnbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuYXUtdGFyZ2V0JyksXG4gICAgICAgIGluc3RydWN0aW9ucyA9IHRoaXMuaW5zdHJ1Y3Rpb25zLFxuICAgICAgICByZXNvdXJjZXMgPSB0aGlzLnJlc291cmNlcyxcbiAgICAgICAgYmVoYXZpb3JzID0gW10sXG4gICAgICAgIGJpbmRpbmdzID0gW10sXG4gICAgICAgIGNoaWxkcmVuID0gW10sXG4gICAgICAgIGNvbnRlbnRTZWxlY3RvcnMgPSBbXSxcbiAgICAgICAgY29udGFpbmVycyA9IHsgcm9vdDpjb250YWluZXIgfSxcbiAgICAgICAgcGFydFJlcGxhY2VtZW50cyA9IG9wdGlvbnMucGFydFJlcGxhY2VtZW50cyB8fCB0aGlzLnBhcnRSZXBsYWNlbWVudHMsXG4gICAgICAgIGksIGlpLCB2aWV3O1xuXG4gICAgZm9yKGkgPSAwLCBpaSA9IGluc3RydWN0YWJsZXMubGVuZ3RoOyBpIDwgaWk7ICsraSl7XG4gICAgICBhcHBseUluc3RydWN0aW9ucyhjb250YWluZXJzLCBleGVjdXRpb25Db250ZXh0LCBpbnN0cnVjdGFibGVzW2ldLFxuICAgICAgICBpbnN0cnVjdGlvbnNbaV0sIGJlaGF2aW9ycywgYmluZGluZ3MsIGNoaWxkcmVuLCBjb250ZW50U2VsZWN0b3JzLCBwYXJ0UmVwbGFjZW1lbnRzLCByZXNvdXJjZXMpO1xuICAgIH1cblxuICAgIHZpZXcgPSBuZXcgVmlldyhmcmFnbWVudCwgYmVoYXZpb3JzLCBiaW5kaW5ncywgY2hpbGRyZW4sIG9wdGlvbnMuc3lzdGVtQ29udHJvbGxlZCwgY29udGVudFNlbGVjdG9ycyk7XG4gICAgdmlldy5jcmVhdGVkKGV4ZWN1dGlvbkNvbnRleHQpO1xuXG4gICAgaWYoIW9wdGlvbnMuc3VwcHJlc3NCaW5kKXtcbiAgICAgIHZpZXcuYmluZChleGVjdXRpb25Db250ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmlldztcbiAgfVxufVxuIl19 |